package com.crm.redis.service.customerManager;

import com.crm.model.entity.customerManager.Customer;

import java.util.List;

/**
 * @Author:chaifuyou
 * @Date: 2021/4/15 9:13
 */
public interface CustomerRedisService {

    /**
     * 给redis存客户分析数据 （暂时测试用）
     * @param accountId
     */
    void addAnalyseCustomerToRedis(String accountId,String jsonDate);

    /**
     * 客户意向分析
     * @param accountId
     */
    String getAnalyseCustomerIntention(String accountId);

    /**
     * redis里的跟进标签
     * @return
     */
    String selectFollowTag();

    /**
     * 添加跟进标签
     * @param tabStr
     */
    void addFollowTagsToRedis(String tabStr);

    /**
     * 判断客户名称是否存在
     * @Author pym
     * @Date  2021/7/1 14:15
     * @param customerName 客户名称
     * @return {@link {java.lang.Boolean}}
     */
    Boolean isCustomerExist(String customerName);

    /**
     * 根据客户名称去Redis查统一社会信用代码
     * @Author pym
     * @Date  2021/7/1 14:47
     * @param customerName 客户名称
     * @return {@link {java.lang.String}}
     */
    String selectUnifiedSocialCreditCode(String customerName);

    /**
     * 获取会员分析
     * @param companyId
     * @return
     */
    String getVipCustomerAnalyseByCompany(String companyId);

    /**
     * 获取会员流失
     * @param companyId
     * @param year
     * @return
     */
    String getOutVipAgainBuyRatio(String companyId, Integer year);

    /**
     * 获取会员交易
     * @param companyId
     * @param year
     * @return
     */
    String getVipCustomerBuyRise(String companyId, Integer year);

    /**
     * 获取会员数量
     * @param year
     * @param companyId
     * @return
     */
    String getVipCustomerCount(Integer year, String companyId);

    /**
     * 客户消费总额度
     * @param year
     * @param companyId
     * @return
     */
    String getCustomerConsumeCount(Integer year, String companyId);

    /**
     * 续费会员数量
     * @param year
     * @param companyId
     * @return
     */
    String getRenewVipCustomerCount(Integer year, String companyId);

    /**
     * 往Redis里添加客户信息
     * @Author pym
     * @Date  2021/7/21 13:47
     * @param list 客户集合
     * @return {@link {java.lang.Boolean}}
     */
    Boolean addCustomerToRedis(List<Customer> list);

    /**
     * 通过客户名称和统一社会信用代码查询客户
     * @Author pym
     * @Date  2021/8/3 14:43
     * @param companyName 客户名称
     * @param unifiedSocialCreditCode 统一社会信用代码
     * @return {@link {com.crm.model.entity.customerManager.Customer}}
     */
    Customer getCustomerByNameAndCode(String companyName,String unifiedSocialCreditCode);

    /**
     * 将客户信息插入Redis
     * @Author pym
     * @Date  2021/8/3 14:51
     * @param customer 客户信息
     * @return {@link {java.lang.Boolean}}
     */
    Boolean setCustomerByNameAndCode(Customer customer);

}
